package com.drawingtimer.admin.utils.http;

import okhttp3.Call;
import okhttp3.Request;
import okhttp3.Response;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.Map;

/**
 * @author lvjunlong
 * @date 2019/7/29 上午9:16
 */
@Component
public interface HTTP {

	/**
	 * json格式post请求
	 * @param url 请求url
	 * @param jsonBody 请求参数
	 * @throws IOException
	 * @return byte数组
	 */
	String postJsonParam(String url, String jsonBody) throws IOException;

	/**
	 * 表单格式
	 * @param baseUrl
	 * @param bodyParams
	 * @return
	 * @throws IOException
	 */
	String postBodyParam(String baseUrl, Map<String, String> bodyParams) throws IOException;

	/**
	 * json格式post请求
	 * @param url 请求url
	 * @param headers 头部
	 * @param jsonBody 请求参数
	 * @return 响应
	 * @throws IOException 异常信息
	 */
	String postJsonParam(String url, Map<String, String> headers, String jsonBody) throws IOException;

	/**
	 * xml内容，POST同步请求
	 * @param url
	 * @param xmlBody
	 */
	byte[] postXml(String url, String xmlBody) throws IOException;

	/**
	 * get同步请求
	 * @param baseUrl 请求url
	 * @param queryParams 请求内容
	 * @throws IOException
	 */
	String get(String baseUrl, Map<String, String> queryParams) throws IOException;

	/**
	 * get同步请求
	 * @param baseUrl 请求url
	 * @param queryParams 请求内容
	 * @throws IOException
	 */
	String get(String baseUrl, Map<String, String> headers, Map<String, String> queryParams) throws IOException;

	/**
	 * 请求方法
	 * @param request
	 * @return 请求
	 * @throws IOException
	 */
	Response reqExecute(Request request) throws IOException;

	/**
	 * 构造CALL方法
	 * @param request 请求
	 * @return call
	 */
	Call reqExecuteCall(Request request);

}
